﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Diagnostics.Contracts;
using HeapSpecSupport;
using SimpleIR;

namespace Evaluator
{
	/// <summary>
	/// This class captures all of the heap, locals, and stack that is the state of the program.
	/// </summary>
	internal sealed class ExeProgram
	{
		public static string GlobalDataDir;

		/// <summary>
		/// The program we are analyzing
		/// </summary>
		private static IRProgram s_prog;

		/// <summary>
		/// The state that the program is in
		/// </summary>
		private static EvalState.GlobalState s_eval;

		public static void LoadProg(IRProgram p, string globaldatadir)
		{
			GlobalDataDir = globaldatadir;
			s_prog = p;
			throw new NotImplementedException();
		}

		public static void AnalyzeMain(bool intesting)
		{
			s_eval = new EvalState.GlobalState();
			throw new NotImplementedException();
		}

		/// <summary>
		/// Get the Program that we are analyzing.
		/// </summary>
		internal static IRProgram TProg { get { return s_prog; } }

		/// <summary>
		/// Get the current state of the program that we are analyzing.
		/// </summary>
		internal static EvalState.GlobalState TState { get { return s_eval; } }
	}
}
